#include<iostream>
#include<random>
#include<sstream>
#include<iomanip>
#include<atomic>
class Uuidhelper{
    public:
    static std::string BuideUuid(){
        std::random_device rd;
        std::mt19937_64 gernator (rd());
        std::uniform_int_distribution<int> distribution(0,255);
        std::stringstream ss;
        for(int i = 0 ;i < 8;i++){
            ss << std::setw(2) <<std::setfill('0') << std::hex << distribution(gernator);
            if(i == 3 || i == 5 || i == 7){
                ss<<'-';
            }
        }
        static std::atomic<size_t> atonum(1);
        size_t num = atonum.fetch_add(1);//unsi long 
        for(int i = 7;i >= 0 ;i--){
            ss << std::setw(2) << std::setfill('0') << std::hex << ((num<<(i*8)) & 0xff);
        }
        return ss.str();
    }
};

int main(){
    std::string tmp1;
    std::string tmp2;
    tmp1 = Uuidhelper::BuideUuid();
    tmp2 = Uuidhelper::BuideUuid();
    std::cout<<tmp1<<" "<<tmp2<<std::endl;
    return 0;
}

// int main(){
    
//     std::random_device rd;
//     std::mt19937_64 gernator (rd());
//     std::uniform_int_distribution<int> distribution(0,255);
//     std::stringstream ss;
//     for(int i = 0 ;i < 8;i++){
//         ss << std::setw(2) <<std::setfill('0') << std::hex << distribution(gernator);
//         if(i == 3 || i == 5 || i == 7){
//             ss<<'-';
//         }
//     }
//     static std::atomic<size_t> atonum(1);
//     size_t num = atonum.fetch_add(1);//unsi long 
//     for(int i = 7;i >= 0 ;i--){
//         ss << std::setw(2) << std::setfill('0') << std::hex << ((num<<(i*8)) & 0xff);
//     }
//     std::cout<<ss.str()<<std::endl;
// }